package api

import "fx_swift_ifcgate/pkg/validator"

type InternationTransferReq struct {
	PayeeId        string `json:"payeeId" binding:"required"`        // 收款方id
	Purpose        string `json:"purpose"`                           // 汇款目的
	ArriveCurrency string `json:"arriveCurrency" binding:"required"` // 收款币种
	DebitCurrency  string `json:"debitCurrency" binding:"required"`  // 扣款币种
	DebitAmount    string `json:"debitAmount" binding:"required"`    // 扣款金额
	PurposeRemark  string `json:"purposeRemark"`                     // 当purpose为99时，汇款目的以此为准
	TradeComments  string `json:"tradeComments"`                     // 汇款附言
}

func (req InternationTransferReq) GetMessage() validator.ValidatorMessages {
	return validator.ValidatorMessages{
		"PayeeId.required":        "收款方id不能为空",
		"ArriveCurrency.required": "收款币种不能为空",
		"DebitCurrency.required":  "扣款币种不能为空",
		"DebitAmount.required":    "扣款金额为空",
	}
}

type DomesticTransferReq struct {
	PayeeId         string          `json:"payeeId" binding:"required"`         // 收款方id
	PaymentType     string          `json:"paymentType" binding:"required"`     // 交易类型
	SettlementType  string          `json:"settlementType"`                     // 结汇类型 10极速结汇，00普通结汇，若不填则默认00普通结汇
	FileUrlPath     string          `json:"fileUrlPath"`                        // 上传至sftp文件服务器的还原材料路径
	PayOrderRequest PayOrderRequest `json:"payOrderRequest" binding:"required"` // 收款信息
	PayReduce       []PayReduce     `json:"payReduce"`                          // 还原材料列表
}

func (req DomesticTransferReq) GetMessage() validator.ValidatorMessages {
	return validator.ValidatorMessages{
		"PayeeId.required":         "收款方id不能为空",
		"PaymentType.required":     "交易类型不能为空",
		"PayOrderRequest.required": "收款信息不能为空",
	}
}

type PayOrderRequest struct {
	PayeeAccountNo        string `json:"payeeAccountNo"`      // 收款方银行账号
	PayeeName             string `json:"payeeName"`           // 收款方银行账户名
	Identity              string `json:"identity"`            // 若收款方账户类型为0，则填写身份证号，为1则填写统一社会信用代码
	CNAPSCode             string `json:"cNAPSCode"`           // 收款方银行联行号 企业必填，个人非必填
	DeclarationCurrency   string `json:"declarationCurrency"` // payMethod值为cash_on_delivery不能为空，默认CNY
	DebitCurrency         string `json:"debitCurrency"`       //扣款币种,默认为CNY (如果入参存在并且不为CNY，则返回后需调用确认接口) (批次内仅允许选择一种币种)
	Mobile                string `json:"mobile"`
	DebitAmount           string `json:"debitAmount"`           // 扣款金额，单位为分，例：若付款200.00元，应填写20000最小为1，和amount强制2选1
	PayMethod             string `json:"payMethod"`             // tradeCodeType为TRADE并且paymentType为B2B时不能为空, 默认：cash_on_delivery
	RegistrationRegion    string `json:"registrationRegion"`    // 付款人住的区域swift国家地区
	SenderIncorporationNo string `json:"senderIncorporationNo"` // 付款方公司注册号
	TradeCodeType         string `json:"tradeCodeType"`         //交易编码
	TradeComments         string `json:"tradeComments"`         // 汇款附言
}

type PayReduce struct {
	GoodNumber    string `json:"goodNumber"`    // 商品数量
	GoodsName     string `json:"goodsName"`     // 商品名
	OrderAmount   string `json:"orderAmount"`   // 订单金额 单位为分
	OrderCurrency string `json:"orderCurrency"` // 订单币种
	OrderDate     string `json:"orderDate"`     // 订单日期 格式为"yyyy-MM-dd"
	OrderNo       string `json:"orderNo"`
	PlatformName  string `json:"platformName"` // 平台名称
	Purpose       string `json:"purpose"`      // 汇款用途
	StoreLink     string `json:"storeLink"`    // 店铺链接
	WlName        string `json:"wlName"`       // 物流公司
	WlSeqno       string `json:"wlSeqno"`      // 物流单号
	PayeeAcctNo   string `json:"payeeAcctNo"`  // 收款人账号
	SellerName    string `json:"sellerName"`
	SellerId      string `json:"sellerId"`
	GoodsCategory string `json:"goodsCategory"`
}

type ITListReq struct {
	BizFlow   string `json:"bizFlowNo"` // 流水号
	Status    string `json:"status"`
	StartTime string `json:"startTime"`
	EndTime   string `json:"endTime"`
	PageNo    int    `json:"pageNo"`
	PageSize  int    `json:"pageSize"`
}

type ITListRes struct {
	BizFlowNo          string `json:"bizFlowNo"` // 流水号
	PayeeFirstName     string `json:"payeeFirstName"`
	PayeeLastName      string `json:"payeeLastName"`
	PayeeBankAccountNo string `json:"payeeBankAccountNo"` // 收款人银行帐号
	ArriveAmount       string `json:"arriveAmount"`       // 付款金额
	ArriveCurrency     string `json:"arriveCurrency"`
	DebitAmount        string `json:"debitAmount"` // 到账金额
	DebitCurrency      string `json:"debitCurrency"`
	Rate               string `json:"rate"`        // 汇率
	FeeAmt             string `json:"feeAmt"`      // 手续费金额
	FeeCurrency        string `json:"feeCurrency"` // 手续费币种
	Status             string `json:"status"`
	CreatedAt          string `json:"createdAt"` // 提交时间
	UpdatedAt          string `json:"updatedAt"`
	Purpose            string `json:"purpose"`
	PurposeRemark      string `json:"purposeRemark"`
	TradeComments      string `json:"tradeComments"`
	RespDesc           string `json:"respDesc"`
	PayeeCompanyName   string `json:"payeeCompanyName"`
	PayType            string `json:"payType"`
}

type DTListReq struct {
	BizFlowNo string `json:"bizFlowNo"` // 流水号
	Status    string `json:"status"`
	StartTime string `json:"startTime"`
	EndTime   string `json:"endTime"`
	PageNo    int    `json:"pageNo"`
	PageSize  int    `json:"pageSize"`
}
type DTListRes struct {
	BizFlowNo      string `json:"bizFlowNo"`      // 流水号
	PayeeName      string `json:"payeeName"`      //收款方姓名
	BankAcctNo     string `json:"bankAcctNo"`     // 收款人银行帐号
	Amount         string `json:"amount"`         // 付款金额
	DebitAmount    string `json:"debitAmount"`    // 换汇金额
	DebitCurrency  string `json:"debitCurrency"`  // 扣款币种
	Rate           string `json:"rate"`           // 汇率
	FeeAmt         string `json:"feeAmt"`         // 手续费金额
	FeeCurrency    string `json:"feeCurrency"`    // 手续费币种
	SettlementType string `json:"settlementType"` // 结汇类型 10极速结汇，00普通结汇
	Status         string `json:"status"`
	CreatedAt      string `json:"createdAt"` // 提交时间
	UpdatedAt      string `json:"updatedAt"`
	RespDesc       string `json:"respDesc"`
	MerOrderNo     string `json:"merOrderNo"`
	TradeCodeType  string `json:"tradeCodeType"`
}

type TradeReceiptListReq struct {
	FlowNo          string `json:"flowNo"`
	ReceiveCurrency string `json:"receiveCurrency"`
	StartTime       string `json:"startTime"`
	EndTime         string `json:"endTime"`
	PageNo          int    `json:"pageNo"`
	PageSize        int    `json:"pageSize"`
}
type TradeReceiptInfoRes struct {
	FlowNo              string `json:"flowNo"`
	ReceiveAmount       string `json:"receiveAmount"`
	ReceiveCurrency     string `json:"receiveCurrency"`
	ActualReceiveAmount string `json:"actualReceiveAmount"`
	SenderName          string `json:"senderName"`
	SenderAccount       string `json:"senderAccount"`
	CreatedAt           string `json:"createdAt"`
	FeeAmount           string `json:"feeAmount"`
	FeeCurrency         string `json:"feeCurrency"`
	TradeStatus         string `json:"tradeStatus"`
	TradeMessage        string `json:"tradeMessage"`
	TradeSubmitStatus   string `json:"tradeSubmitStatus"`
	AccountName         string `json:"accountName"`
	AccountNo           string `json:"accountNo"`
}

type SubmitTradeOrderReq struct {
	FlowNo          string          `json:"flowNo"`          // 到账流水号
	BuyName         string          `json:"buyerName"`       // 采购方名称
	BuyerArea       string          `json:"buyerArea"`       // 采购方所属地区
	Currency        string          `json:"currency"`        // 采购币种
	Amount          string          `json:"amount"`          // 订单总金额
	TradeType       string          `json:"tradeType"`       // 贸易类型 默认：00-货物贸易 01-服务贸易
	TranscationDate string          `json:"transcationDate"` // 交易日期 yyyy-MM-dd
	TranscationCert []string        `json:"transcationCert"` // 交易凭证
	GoodsList       []GoodsList     `json:"goodList"`
	LogStatus       string          `json:"logStatus"` // 当贸易类型为00-货物贸易时必填 0-未发货 1-已发货 如果是已发货logNo、logCompany、annexUrl三个字段必填
	LogNo           string          `json:"logNo"`
	LogCompany      string          `json:"logCompany"`
	AnnexUrl        []string        `json:"annexUrl"`
	ServiceTrade    ServiceTradeObj `json:"serviceTrade"` // 当贸易类型为01-服务贸易时必填
}

type TradeOrderListReq struct {
	StartTime string `json:"startTime"`
	EndTime   string `json:"endTime"`
	FlowNo    string `json:"flowNo"`
	Currency  string `json:"currency"`
	PageNo    int    `json:"pageNo"`
	PageSize  int    `json:"pageSize"`
}

type TradeOrderMappingInfoRes struct {
	FlowNo      string `json:"flowNo"`
	Status      string `json:"status"`
	Message     string `json:"message"`
	Amount      string `json:"amount"`
	ApproveTime string `json:"approveTime"`
	FeeAmt      string `json:"feeAmt"`
}

type DomesticTransferDetailReq struct {
	TradeOrderInfo []TradeOrderInfo `json:"tradeOrderInfo"`
	FileUrlPath    string           `json:"fileUrlPath"`
}

type TradeOrderInfo struct {
	GoodNumber    string `json:"goodNumber"`    // 商品数量
	GoodsName     string `json:"goodsName"`     // 商品名
	OrderAmount   string `json:"orderAmount"`   // 订单金额 单位为分
	OrderCurrency string `json:"orderCurrency"` // 订单币种
	OrderDate     string `json:"orderDate"`     // 订单日期 格式为"yyyy-MM-dd"
	OrderNo       string `json:"orderNo"`
	PlatformName  string `json:"platformName"` // 平台名称
	Purpose       string `json:"purpose"`      // 汇款用途
	StoreLink     string `json:"storeLink"`    // 店铺链接
	WlName        string `json:"wlName"`       // 物流公司
	WlSeqno       string `json:"wlSeqno"`      // 物流单号
	PayeeAcctNo   string `json:"payeeAcctNo"`  // 收款人账号
	SellerName    string `json:"sellerName"`
	SellerId      string `json:"sellerId"`
	GoodsCategory string `json:"goodsCategory"`
}

type CheckoutTradeAmountReq struct {
	PayMethod      string `json:"payMethod"`      // 付款方式 0-人民币,1-国际
	TradeType      string `json:"tradeType"`      // 交易类型
	Amount         string `json:"amount"`         // 金额
	SellCurrency   string `json:"sellCurrency"`   // 卖出
	BuyCurrency    string `json:"buyCurrency"`    // 买入币种
	PayeeId        string `json:"payeeId"`        // 收款方id
	SettlementType string `json:"settlementType"` //  结汇类型 10极速结汇，00普通结汇
}

type CheckoutTradeAmountRes struct {
	Amount string `json:"amount"`
	Fee    string `json:"fee"`
	Rate   string `json:"rate"`
}
